package de.h_da.fbi.cg.pointcloud.adt;

import java.util.ArrayList;

import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;

/**
 * @author Nicolas Gramlich
 * @since 19:46:02 - 12.11.2010
 */
public class VertexList extends ArrayList<Vertex> {
	// ===========================================================
	// Constants
	// ===========================================================

	private static final long serialVersionUID = -3068861701387274590L;

	// ===========================================================
	// Fields
	// ===========================================================

	// ===========================================================
	// Constructors
	// ===========================================================

	// ===========================================================
	// Getter & Setter
	// ===========================================================

	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================

	// ===========================================================
	// Methods
	// ===========================================================

	public void removeNonEMSTInternalEdges() {
		for(int i = this.size() - 1; i >= 0; i--) {
			this.get(i).removeNonEMSTInternalEdges();
		}
	}

	public void transform(final Vector3f pTranslation, final float pScale, final Quaternion pQuaternion) {
		final Vector3f tmp = new Vector3f();

		for(final Vertex v : this) {
			tmp.set(v.mX, v.mY, v.mZ);

			if(pTranslation != null) {
				tmp.addLocal(pTranslation);
			}
			tmp.multLocal(pScale);

			if(pQuaternion != null) {
				pQuaternion.mult(tmp, tmp);
			}

			v.mX = tmp.x;
			v.mY = tmp.y;
			v.mZ = tmp.z;
		}
	}

	// ===========================================================
	// Inner and Anonymous Classes
	// ===========================================================
}
